S01-02 JavaSE-基础-Java概述
[TOC]
第2章 JAVA 概述
什么是程序
程序:计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。
举例说明:
- 要求:完成1+1,并把答案写在黑板
- 要求:完成1+1,并把答案显示在电脑
JAVA 诞生小故事
- 1990年Sun公司启动绿色计划
- 1992年创建Oak(橡树)语言→Java
- 1994年Gosling参加硅谷大会演示Java功能,震惊世界
- 1995年Sun正式发布Java第1个版本
- 2009年,甲骨文公司宣布收购Sun
- 2011年,发布Java7
其他Java版本发布详情:https://www.oracle.com/java/technologies/javase-support-roadmap.html
| Release | GA Date | Premier Support Until | Extended Support Until | Sustaining Support |
|---|---|---|---|---|
| 7 | July 2011 | July 2019 | July 2022 | Indefinite |
| 8 (LTS) | March 2014 | March 2022 | December 2030 | Indefinite |
| 9 (non-LTS) | September 2017 | March 2018 | Not Available | Indefinite |
| 10 (non-LTS) | March 2018 | September 2018 | Not Available | Indefinite |
| 11 (LTS) | September 2018 | September 2023 | September 2026 | Indefinite |
| 12 (non-LTS) | March 2019 | September 2019 | Not Available | Indefinite |
| 13 (non-LTS) | September 2019 | March 2020 | Not Available | Indefinite |
| 14 (non-LTS) | March 2020 | September 2020 | Not Available | Indefinite |
| 15 (non-LTS) | September 2020 | March 2021 | Not Available | Indefinite |
JAVA 技术体系平台
- Java SE(Java Standard Edition)标准版:支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,此版本以前称为J2SE
- Java EE(Java Enterprise Edition)企业版:为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如:Servlet、Jsp等,主要针对于Web应用程序开发,版本以前称为J2EE
- Java ME(Java Micro Edition)小型版:支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了针对移动终端的支持,此版本以前称为J2ME
JAVA 重要特点
- Java 语言是面向对象的(OOP)
- Java 语言是健壮的。Java 的强类型机制、异常处理、垃圾的自动收集等是Java 程序健壮性的重要保证
- Java 语言是跨平台性的(即:一个编译好的.class 文件可以在多个系统下运行,这种特性称为跨平台)
- Java 语言是解释型的(了解):解释性语言(JavaScript、PHP、Java),编译性语言(C/C++)。区别是:解释性语言编译后的代码不能直接被机器执行,需要解释器来执行;编译性语言编译后的代码可以直接被机器执行
JAVA 的开发工具
- 简单工具:editplus、notepad++、Sublime Text(下载地址:https://www.sublimetext.com/3)
- 集成开发工具:Eclipse、IDEA
工具选择
- 初期选择文本编辑器Sublime,对Java有一定了解后,再使用IDEA和Eclipse
- 原因:更深刻的理解Java技术,培养代码感(面试时,往往程序员手写代码),有利于公司面试
JAVA 运行机制及运行过程
Java 语言的特点:跨平台性
Java程序的跨平台性通过JVM实现,同一个Java程序在Windows、Linux、Mac等操作系统中都可以执行。
示意图:
Test.java 程序 → 编译 → Test.class → 运行 → Win版JVM / Linux版JVM / Mac版JVM → 对应操作系统Java 核心机制-Java 虚拟机[JVM java virtual machine]
- 基本介绍:
- JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器,包含在JDK中
- 对于不同的平台,有不同的虚拟机
- Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
示意图:
Test.java → 编译(javac)→ Test.class → 运行(java)→ JVM for Windows / JVM for Linux / JVM for Mac什么是JDK,JRE
JDK 基本介绍
- JDK 的全称(Java Development Kit Java 开发工具包):JDK = JRE + Java 的开发工具(java、javac、javadoc、javap 等)
- JDK 是提供给Java 开发人员使用的,其中包含了Java 的开发工具,也包括了JRE。所以安装了JDK,就不用再单独安装JRE了
JRE 基本介绍
- JRE(Java Runtime Environment Java 运行环境):JRE = JVM + Java 的核心类库(类)
- 包括Java 虚拟机(JVM Java Virtual Machine)和Java 程序所需的核心类库等,如果想要运行一个开发好的Java 程序,计算机中只需要安装JRE 即可
JDK、JRE和JVM 的包含关系
- JDK = JRE + 开发工具集(例如Javac、java 编译工具等)
- JRE = JVM + Java SE 标准类库(Java 核心类库)
- 如果只想运行开发好的.class 文件,只需要JRE
下载、安装JDK
- 官方网址:https://www.oracle.com/java/technologies/javase-downloads.html
- 安装步骤:
- 傻瓜式安装,下一步即可
- 安装路径不要有中文或者特殊符号如空格等,比如d:\program\hspjdk8
- 当提示安装JRE时,可以选择不安装,也可以安装
配置环境变量PATH
为什么要配置path
在dos命令行(快捷方式win+r)中敲入javac,出现错误提示“javac'不是内部或外部命令,也不是可运行的程序或批处理文件”。原因是当前执行的程序在当前目录下不存在,系统会在path环境变量指定的目录中查找,未找到则报错。进入jdk安装路径\bin目录下,执行javac,会看到javac参数提示信息。
配置环境变量path 的步骤
- 我的电脑→属性→高级系统设置→环境变量
- 增加JAVA_HOME环境变量,指向jdk的安装目录(如d:\program\hspjdk8)
- 编辑path环境变量,增加%JAVA_HOME%\bin
- 打开DOS命令行,任意目录下敲入javac/java,如果出现javac的参数信息,配置成功
安装JDK 的练习
练习要求
请同学们安装好JDK,配置好path 环境变量,可以在控制台下正确的执行(10min)。
验证命令:
C:\Users\Administrator>java -version预期输出:
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)环境变量配置细节说明
- 用户变量:Administrator的用户变量中,JAVA_HOME 为D:\program\hspjdk8
- 系统变量:Path 中包含%JAVA_HOME%\bin 等路径
Java 快速入门
需求说明
要求开发一个Hello.java 程序,可以输出 "hello,world!"
开发步骤
- 将Java 代码编写到扩展名为Hello.java 的文件中
- 通过javac 命令对该java 文件进行编译,生成.class 文件
- 通过java 命令对生成的class 文件进行运行
运行原理示意图
Hello.java → 编译(javac)→ Hello.class → 运行(java)→ JVM for WindowsJava 开发快速入门
课堂小练习
要求开发一个Hello.java程序,可以输出"老王is studying java!"(2min)
文件有中文时的处理:
- 在文件→设置文件编码→GBK
- 需要重新保存即可
代码示例:
// 这是java 的快速入门,演示java 的开发步骤
// 对代码的相关说明
// 1. public class Hello 表示Hello 是一个类,是一个public 公有的类
// 2. Hello{ } 表示一个类的开始和结束
// 3. public static void main(String[] args) 表示一个主方法,即我们程序的入口
// 4. main() {} 表示方法的开始和结束
// 5. System.out.println("hello,world~"); 表示输出"hello,world~"到屏幕
// 6. ;表示语句结束
public class Hello {
// 编写一个main 方法
public static void main(String[] args) {
System.out.println("韩顺平教育hello");
}
}
// Dog 是一个类
class Dog {
// 一个源文件中最多只能有一个public 类,其它类的个数不限
// 也可以将main 方法写在非public 类中,然后指定运行非public 类,这样入口方法就是非public 的main 方法
public static void main(String[] args) {
System.out.println("hello, 小狗狗~");
}
}
class Tiger {
public static void main(String[] args) {
System.out.println("hello, 小老虎~");
}
}Java执行流程分析:
源文件(.java)→ 编译(javac)→ 字节码文件(.class)→ 运行(java)→ 结果Java 开发注意事项和细节说明
- Java源文件以.java为扩展名,源文件的基本组成部分是类(class)
- Java应用程序的执行入口是main()方法,它有固定的书写格式:public static void main(String[] args)
- Java语言严格区分大小写
- Java方法由一条条语句构成,每个语句以";"结束
- 大括号都是成对出现的,缺一不可(习惯:先写{}再写代码)
- 一个源文件中最多只能有一个public类,其它类的个数不限
- 如果源文件包含一个public类,则文件名必须按该类名命名
- 可以将main方法写在非public类中,然后指定运行非public类,这样入口方法就是非public的main方法
老韩聊:如何快速掌握技术或知识点
- 明确需求(工作需要、跳槽要求、技术控)
- 尝试用传统技术解决(能解决但不完美/无法解决)
- 引出新技术和知识点
- 学习新技术的基本原理、基本语法(不考虑细节)
- 快速入门(基本程序、CRUD)
- 研究技术的注意事项、使用细节、使用规范
- 优化(没有止境,技术魅力)
Java 转义字符
Java 常用的转义字符
- \t:一个制表位,实现对齐的功能
- \n:换行符
- \:一个\
- ":一个"
- ':一个'
- \r:一个回车
说明及应用实例
// 演示转义字符的使用
public class ChangeChar {
public static void main(String[] args) {
// \t :一个制表位,实现对齐的功能
System.out.println("北京\t 天津\t 上海");
// \n :换行符
System.out.println("jack\nsmith\nmary");
// \\ :一个\
System.out.println("C:\\Windows\\System32\\cmd.exe");
// \" :一个"
System.out.println("老韩说:\"要好好学习java,有前途\"");
// \' :一个'
System.out.println("老韩说:\'要好好学习java,有前途\'");
// \r :一个回车
System.out.println("韩顺平教育\r 北京"); // 输出结果为" 北京平教育"
}
}课堂练习
要求:请使用一句输出语句,达到输入如下图形的效果(2min)
书名 作者 价格 销量
三国 罗贯中 120 1000代码示例:
public class ChangeCharExer01 {
public static void main(String[] args) {
System.out.println("书名\t 作者\t 价格\t 销量\n三国\t 罗贯中\t120\t1000");
}
}初学java 易犯错误
- 找不到文件:源文件名不存在或者写错,或者当前路径错误
- 主类名和文件名不一致:声明为public的主类应与文件名一致,否则编译失败
- 缺少分号:编译失败,注意错误出现的行数,再到源代码中指定位置改错
- 常见错误总结:
- 语法错误(初学者常见):忘记分号、大括号、引号,拼错单词等,编译器会报语法错误
- 其他错误:英文符号写中文符号(;;"")、void拼写错误(viod)、业务错误、环境错误
注释(COMMENT)
介绍
用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性(可读性);注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。
Java 中的注释类型
- 单行注释 //
- 多行注释 /* */
- 文档注释 /** */
单行注释
基本格式://注释文字
多行注释
基本格式:/* 注释文字*/
使用细节
- 被注释的文字,不会被JVM(java 虚拟机)解释执行
- 多行注释里面不允许有多行注释嵌套
文档注释
基本格式:/** 注释内容 */ 注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类、方法等上面。
生成文档注释命令:javadoc -d 文件夹名 -xx -yy 文件名.java
示例:
javadoc -d d:\temp -author -version Comment02.java代码演示
// 演示注释使用
public class Comment01 {
// 编写一个main 方法
public static void main(String[] args) {
// 单行注释
/* 多行注释
示意=> 可读性很好
下面代码完成两个数相加
定义变量
*/
int n1 = 10;
int n2 = 30;
// 求和
int sum = n1 + n2;
// 输出结果
System.out.println("结果=" + sum);
}
}
/**
* @author 韩顺平
* @version 1.0
*/
public class Comment02 {
public static void main(String[] args) {
// 选中,然后输入tab 整体右移
// 选中,然后输入shift+tab 整体左移
int n1 = 1 + 2;
int n2 = 5 + 10;
int n3 = 1 + 3 * 34;
}
}Java 代码规范
- 类、方法的注释,要以javadoc的方式来写
- 非Java Doc的注释,往往是给代码的维护者看的,着重告诉读者为什么这样写,如何修改,注意什么问题等
- 使用tab操作,实现缩进,默认整体向右边移动,使用shift+tab整体向左移
- 运算符和=两边习惯性各加一个空格,比如:2 + 4 * 5 + 345 - 89
- 源文件使用utf-8编码
- 行宽度不要超过80字符
- 代码编写采用次行风格或行尾风格(推荐行尾风格)
行尾风格示例:
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
} else {
throw new IllegalArgumentException("Illegal Capacity: " + initialCapacity);
}
}次行风格示例:
public ArrayList(int initialCapacity)
{
if (initialCapacity > 0)
{
this.elementData = new Object[initialCapacity];
}
else if (initialCapacity == 0)
{
this.elementData = EMPTY_ELEMENTDATA;
}
else
{
throw new IllegalArgumentException("Illegal Capacity: " + initialCapacity);
}
}DOS 命令(了解)
DOS 介绍
Dos:Disk Operating System 磁盘操作系统,Windows的目录结构为树形结构。
DOS的基本原理:
- 接受指令
- 解析指令
- 执行指令
相关的知识补充:相对路径,绝对路径
- 相对路径:从当前目录开始定位,形成的一个路径
- 绝对路径:从顶级目录(如d:)开始定位,形成的路径
示例:
- 需求:从d:\abc1\test100访问d:\abc2\test200\hello.txt
- 相对路径:....\abc2\test200\hello.txt
- 绝对路径:d:\abc2\test200\hello.txt
常用的dos 命令
- 查看当前目录内容:dir(示例:dir d:\abc2\test200)
- 切换到其他盘下:盘符号(示例:cd /D c:)
- 切换到当前盘的其他目录下:cd 路径(示例:cd d:\abc2\test200、cd ....\abc2\test200)
- 切换到上一级:cd ..
- 切换到根目录:cd \
- 查看指定目录下所有子级目录:tree
- 清屏:cls
- 退出DOS:exit
- 其他(了解):md(创建目录)、rd(删除目录)、copy(拷贝文件)、del(删除文件)、echo(输入内容到文件)、type(查看文件内容)、move(剪切)
本章作业
- 编写hello,world程序[Homework01.java]
- 将个人的基本信息(姓名、性别、籍贯、住址)打印到控制台上输出,各条信息分别占一行[Homework02.java]
- JDK,JRE,JVM的关系[Homework03.java](简答题)
- 环境变量path配置及其作用[Homework04.java]
- Java编写步骤[Homework05.java]
- Java编写7个规范[Homework06.java]
- 初学者java易犯错误[Homework07.java]